<!doctype html>



  


<html class="theme-next pisces use-motion">
<head>
  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>



<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />












  
  
  <link href="/vendors/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />




  
  
  
  

  
    
    
  

  

  

  

  

  
    
    
    <link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
  






<link href="/vendors/font-awesome/css/font-awesome.min.css?v=4.4.0" rel="stylesheet" type="text/css" />

<link href="/css/main.css?v=5.0.1" rel="stylesheet" type="text/css" />


  <meta name="keywords" content="王雨峰, 博客" />








  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=5.0.1" />






<meta name="description" content="##课程安排信安的朋友们请闷声围观，我知道你们上学期已经学完C++了…

这张图，是2014级计算机科学与技术专业，关于 C++ 的安排。亮点是“自学”，无数学长学姐告诉我们，“自学”就是“不用学”的意思。再加上这点可怜的学分，似乎 C++ 这门课自带忧伤属性。那到底学不学啊？
##C++重要吗？重要不重要总得有个依据，It depends.开发游戏，C++可能很重要；做个网站，C++可能没什么用">
<meta property="og:type" content="article">
<meta property="og:title" content="学习 C++ 的书籍推荐和杂谈">
<meta property="og:url" content="http://wangyufeng.org/2015/08/19/cpp-learning-book/index.html">
<meta property="og:site_name" content="王雨峰的博客">
<meta property="og:description" content="##课程安排信安的朋友们请闷声围观，我知道你们上学期已经学完C++了…

这张图，是2014级计算机科学与技术专业，关于 C++ 的安排。亮点是“自学”，无数学长学姐告诉我们，“自学”就是“不用学”的意思。再加上这点可怜的学分，似乎 C++ 这门课自带忧伤属性。那到底学不学啊？
##C++重要吗？重要不重要总得有个依据，It depends.开发游戏，C++可能很重要；做个网站，C++可能没什么用">
<meta property="og:image" content="http://7xku3h.com1.z0.glb.clouddn.com/15-8-14/16965018.jpg">
<meta property="og:image" content="http://7xku3h.com1.z0.glb.clouddn.com/15-8-14/84722053.jpg">
<meta property="og:updated_time" content="2015-08-23T13:46:42.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="学习 C++ 的书籍推荐和杂谈">
<meta name="twitter:description" content="##课程安排信安的朋友们请闷声围观，我知道你们上学期已经学完C++了…

这张图，是2014级计算机科学与技术专业，关于 C++ 的安排。亮点是“自学”，无数学长学姐告诉我们，“自学”就是“不用学”的意思。再加上这点可怜的学分，似乎 C++ 这门课自带忧伤属性。那到底学不学啊？
##C++重要吗？重要不重要总得有个依据，It depends.开发游戏，C++可能很重要；做个网站，C++可能没什么用">
<meta name="twitter:image" content="http://7xku3h.com1.z0.glb.clouddn.com/15-8-14/16965018.jpg">



<script type="text/javascript" id="hexo.configuration">
  var NexT = window.NexT || {};
  var CONFIG = {
    scheme: 'Pisces',
    sidebar: {"position":"left","display":"post"},
    fancybox: true,
    motion: true,
    duoshuo: {
      userId: 0,
      author: '博主'
    }
  };
</script>




  <link rel="canonical" href="http://wangyufeng.org/2015/08/19/cpp-learning-book/"/>

  <title> 学习 C++ 的书籍推荐和杂谈 | 王雨峰的博客 </title>
</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  










  
  
    
  

  <div class="container one-collumn sidebar-position-left page-post-detail ">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-meta ">
  

  <div class="custom-logo-site-title">
    <a href="/"  class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <span class="site-title">王雨峰的博客</span>
      <span class="logo-line-after"><i></i></span>
    </a>
  </div>
  <p class="site-subtitle">随便写点东西，为互联网贡献一些比特~</p>
</div>

<div class="site-nav-toggle">
  <button>
    <span class="btn-bar"></span>
    <span class="btn-bar"></span>
    <span class="btn-bar"></span>
  </button>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/about" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
            
            关于
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/archives" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
            
            归档
          </a>
        </li>
      

      
    </ul>
  

  
</nav>

 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  
  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
            
            
              
                学习 C++ 的书籍推荐和杂谈
              
            
          </h1>
        

        <div class="post-meta">
          <span class="post-time">
            <span class="post-meta-item-icon">
              <i class="fa fa-calendar-o"></i>
            </span>
            <span class="post-meta-item-text">发表于</span>
            <time itemprop="dateCreated" datetime="2015-08-19T18:20:02+08:00" content="2015-08-19">
              2015-08-19
            </time>
          </span>

          
            <span class="post-category" >
              &nbsp; | &nbsp;
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
              
                <span itemprop="about" itemscope itemtype="https://schema.org/Thing">
                  <a href="/categories/学习/" itemprop="url" rel="index">
                    <span itemprop="name">学习</span>
                  </a>
                </span>

                
                

              
            </span>
          

          
            
          

          

          
          

          
        </div>
      </header>
    


    <div class="post-body" itemprop="articleBody">

      
      

      
        <p>##课程安排<br>信安的朋友们请闷声围观，我知道你们上学期已经学完C++了…</p>
<p><img src="http://7xku3h.com1.z0.glb.clouddn.com/15-8-14/16965018.jpg" alt=""></p>
<p>这张图，是2014级计算机科学与技术专业，关于 C++ 的安排。亮点是“自学”，无数学长学姐告诉我们，“自学”就是“不用学”的意思。再加上这点可怜的学分，似乎 C++ 这门课自带忧伤属性。<em>那到底学不学啊？</em></p>
<p>##C++重要吗？<br>重要不重要总得有个依据，It depends.<br>开发游戏，C++可能很重要；做个网站，C++可能没什么用武之地。</p>
<p>那对于我们学生来说呢？我的个人看法是：</p>
<ul>
<li>这门语言本身对于我们来说，不太重要；</li>
<li>学习 C++ 的过程，很重要。</li>
</ul>
<p>###语言本身是什么意思？<br>请注意，是<strong>不太重要，但不是没有用。</strong></p>
<p>在我看来，C++ 的用武之地在减少。</p>
<ul>
<li>底层的部分，比如操作系统和单片机，大家更喜欢用C语言，Linux 坚持不用 C++ 重写。</li>
<li>大型的系统，现在 Java 似乎比较吃香，比如企业的后台系统，用 J2EE 的不少。</li>
<li>上面提到的做网站，前端就是一套 HTML+CSS+JavaScript，后端的 CGI 也没见还有用 C++ 的了。</li>
<li>科学领域，用 C/Python/R/Matlab 比较多，甚至还有老古董 FORTRAN，没见什么地方用 C++ 比较多。</li>
<li>就连做游戏，现在也是向脚本语言发展。C# 也在许多领域取代了 C++。君不见 Unity3D 都用上 C# 了？（舍友告诉我的，别打我）</li>
</ul>
<p>为什么会这样？我觉得这可能跟 C++ 发明者的性格有关系。Bjarne Stroustrup 觉得，不应该强加意志给程序员，所以 C++ 不强加任何意志给你，而这也就造就了它的缺陷。C++ 想要造一艘航空母舰，但它同时还想兼容 C 语言家庭作坊式的发动机。试问，除了 C++，还有哪个面向对象语言的程序员需要操心手动内存回收？</p>
<p>###过程很重要？<br>对，虽然 C++ 背负着历史的包袱走过这么多年，受到了一些阻碍，<strong>但也不妨碍我们学习它。</strong>好比我们之中，哪怕是从事 IT 行业的同学，恐怕90%以上的人都不会再主要使用 C 语言进行工作，但这不妨碍我们学习 C 语言的必要性。</p>
<p>“数据结构”是咱们专业的重头戏，那数据结构这门课主要用什么语言来描述和学习呢？依我之愚见，C++ 是最适合的语言。C 语言太原始，不方便。而到了 Java 就已经封闭了”指针”等“危险品”，更别提那些脚本语言了。而 C++ 能兼顾手工的细节和自动化的便捷。</p>
<p>计科的朋友们，咱们是大二下学期学数据结构这门课。那如果大二上没咋学 C++，几乎相当于大二下得再自学一遍。做 C 课设时觉得链表存在困难的朋友，请一定留心。</p>
<p>C++ 向下兼容 C，也就是说 C 是 C++ 语言的子集。那么我们在 C++ 语言中可以很方便地用 C 语言的写法，从底层来学习数据结构和算法的原理。<strong>但这种兼容，对工程来说没有好处，</strong>大概只适合我们用来学习吧。</p>
<p>同 Java 一样，C++ 也是编译型的面向对象语言。我们学 C++，同时也能学习面向对象的思维。也许当我们都忘记了 C++ 的具体用法时，那些面向对象的思维模式还能够帮到我们。虽然函数式编程很火，但面向对象编程，想必一时半会也不会被替代。</p>
<p>###所以呢？<br>好好学C++ 吧，不会吃亏的。我的建议是别抠细节，用心感受，学完以后把细节都忘了才好。</p>
<p>毕竟以后我们的课程里就再也没有编程语言了，再学不学就靠自觉了。</p>
<p>还有啊…可能用 C++ 作为开发语言的前辈们该不高兴了。C++当然用途还是大大的有，比如我昨天给秘密花园填色用的 OpenCV 库，就是用 C++ 编写的。然而也不能回避的是，这个库已经支持 Java 和 Python 的接口了…</p>
<p>##书籍<br>首推</p>
<blockquote>
<p>C++ Primer Plus<br><img src="http://7xku3h.com1.z0.glb.clouddn.com/15-8-14/84722053.jpg" alt=""></p>
</blockquote>
<p>这书难度不大，适合初学入门，虽然有点厚，因为讲的细。我的个人建议是别太抠细节，第一遍先浏览一遍，对整体有个概念。第二遍仔细看的时候再敲代码。否则进度会很慢，就失去了看下去的动力了（比如我= =）。</p>
<p>觉得学有余力的请买 </p>
<blockquote>
<p>C++ Primer </p>
</blockquote>
<p>没有 Plus，难度比那本大。</p>
<p>有人推荐说 </p>
<blockquote>
<p>Thinking in C++</p>
</blockquote>
<p>也不错，我没看过。但 Thinking in Java 确实是一本好书。</p>
<p>不太推荐买谭浩强老师的教材。<strong>极不推荐买各种奇怪出版社的“速成”教材</strong>，那些书一般都是东拼西凑出来的，感觉不像是在说人话。</p>
<p>一般咱们专业的书，</p>
<ul>
<li>机械工业出版社</li>
<li>人民邮电出版社</li>
<li>清华大学出版社</li>
<li>电子工业出版社</li>
</ul>
<p>都挺靠谱的。</p>
<p>就酱吧，共勉。</p>

      
    </div>

    <div>
      
        

      
    </div>

    <div>
      
        

      
    </div>

    <footer class="post-footer">
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/2015/08/15/auto-colour-secret-garden/" rel="next" title="给秘密花园自动上色">
                <i class="fa fa-chevron-left"></i> 给秘密花园自动上色
              </a>
            
          </div>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/2015/08/20/ping-guo-de-yue-liang-bi-jiao-yuan/" rel="prev" title="苹果的月亮比较圆">
                苹果的月亮比较圆 <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </article>



    <div class="post-spread">
      
    </div>
  </div>


          </div>
          


          
  <div class="comments" id="comments">
    
  </div>


        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap" >
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview sidebar-panel ">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
          <img class="site-author-image" itemprop="image"
               src="/images/avatar.gif"
               alt="Alan" />
          <p class="site-author-name" itemprop="name">Alan</p>
          <p class="site-description motion-element" itemprop="description">Alan Wang's personal blog.</p>
        </div>
        <nav class="site-state motion-element">
          <div class="site-state-item site-state-posts">
            <a href="/archives">
              <span class="site-state-item-count">57</span>
              <span class="site-state-item-name">日志</span>
            </a>
          </div>

          
            <div class="site-state-item site-state-categories">
              
                <span class="site-state-item-count">9</span>
                <span class="site-state-item-name">分类</span>
              
            </div>
          

          
            <div class="site-state-item site-state-tags">
              
                <span class="site-state-item-count">4</span>
                <span class="site-state-item-name">标签</span>
              
            </div>
          

        </nav>

        

        <div class="links-of-author motion-element">
          
        </div>

        
        

        
        

      </section>

      
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">
            
              
            
            
              <p class="post-toc-empty">此文章未包含目录</p>
            
          </div>
        </section>
      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <div class="copyright" >
  
  &copy; 
  <span itemprop="copyrightYear">2016</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">Alan</span>
</div>

<div class="powered-by">
  Powered by <a class="theme-link" href="https://hexo.io">Hexo</a> 
</div>

<div class="theme-info">
  主题 -
  <a class="theme-link" href="https://github.com/iissnan/hexo-theme-next">
    NexT.Pisces
  </a>
</div>

        

        
      </div>
    </footer>

    <div class="back-to-top">
      <i class="fa fa-arrow-up"></i>
    </div>
  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  



  
  <script type="text/javascript" src="/vendors/jquery/index.js?v=2.1.3"></script>

  
  <script type="text/javascript" src="/vendors/fastclick/lib/fastclick.min.js?v=1.0.6"></script>

  
  <script type="text/javascript" src="/vendors/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>

  
  <script type="text/javascript" src="/vendors/velocity/velocity.min.js?v=1.2.1"></script>

  
  <script type="text/javascript" src="/vendors/velocity/velocity.ui.min.js?v=1.2.1"></script>

  
  <script type="text/javascript" src="/vendors/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>


  


  <script type="text/javascript" src="/js/src/utils.js?v=5.0.1"></script>

  <script type="text/javascript" src="/js/src/motion.js?v=5.0.1"></script>



  
  


  <script type="text/javascript" src="/js/src/affix.js?v=5.0.1"></script>

  <script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.0.1"></script>



  
  <script type="text/javascript" src="/js/src/scrollspy.js?v=5.0.1"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=5.0.1"></script>



  


  <script type="text/javascript" src="/js/src/bootstrap.js?v=5.0.1"></script>



  



  




  
  

  

  

  

</body>
</html>
